package cn.lcsjsxy.yxz.day.Practice.Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

//线程池使用
public class Practice4 {
    public static void main(String[] args) {

        // 使用 ExecutorService 创建一个固定大小的线程池，提交 10 个任务，
        // 每个任务打印当前线程名称和任务编号，并统计所有任务执行完成的总时间。

        ExecutorService executor = Executors.newFixedThreadPool(3);
        long startTime = System.currentTimeMillis();
        //提交任务
        for (int i = 0; i < 10; i++){
            final int taskNumber = i + 1;
            executor.submit(() -> {
                System.out.println("任务 " + taskNumber + "线程 " + Thread.currentThread().getName() + "执行");
                try {
                    //执行时间
                    Thread.sleep(500);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            });
        }
        //关闭线程池
        executor.shutdown();
        try {
            executor.awaitTermination(1, TimeUnit.MINUTES);
            long endTime = System.currentTimeMillis();
            System.out.println("执行完毕总耗时: " + (endTime - startTime) + "毫秒");
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}
